use std::fmt::Debug;
trait PrintInOption {
    fn print_in_option(self); //只能是self不能是&self
}
// impl<T> PrintInOption for Option<T> where T: Debug {
//     fn print_in_option(self) {
//         println!("{:?}", self);
//     }
// }
// 这里需要一个`where`子句,否则就表达成`T: Debug`（这样意思就变了，如上注释）
// 或者改用另一种间接的方法
impl<T> PrintInOption for T where
    Option<T>: Debug
{
    // 我们要将`Option<T>: Debug`作为约束，因为那是要打印的内容
    // 否则我会给出错误的约束。
    fn print_in_option(self) {
        println!("{:?}", Some(self));
    }
}
fn main() {
    // let v = Some(vec![1, 2, 3]);
    // v.print_in_option();
    let vec = vec![1, 2, 3];
    vec.print_in_option();


}
